﻿using ibba.src.sl.componentes;

namespace ibba.src.noriskbo.code.BarraBotoes
{
    public class VisibilidadeBotoesPerfilAprovador : VisibilidadeBotoes
    {
        private IVisibilidadeBotoes _botoes;

        public VisibilidadeBotoesPerfilAprovador(ControlMenuBar pBarraBotoes)
            : base(pBarraBotoes)
        { }

        public override void AdicionarComponente(IVisibilidadeBotoes pVisibilidadeBotao)
        {
            _botoes = pVisibilidadeBotao;
        }

        protected override void AlterarVisibilidadeEspecializado(string pStatus, string pUsuario, Enumerador.eAcaoBotao pAcao)
        {
            if (_botoes != null)
                _botoes.AlterarVisibilidade(pStatus, pUsuario, pAcao);

            if (PerfilHelper.IsAprovador)
                AlterarVisibilidadeAprovador(pStatus, pUsuario, pAcao);

        }

        private void AlterarVisibilidadeAprovador(string pStatus, string pUsuario, Enumerador.eAcaoBotao pAcao)
        {
            switch (pStatus)
            {
                case Constantes.StatusFluxoLM.EM_EXCLUSAO:
                case Constantes.StatusFluxoLM.EM_APROVACAO:
                case Constantes.StatusFluxoLM.EM_BAIXA_OPERACIONAL:
                case Constantes.StatusFluxoLM.EM_EXCLUSAO_BAIXA_OPERACIONAL:
                    base.BarraBotoes.AlterarVisibilidadeBotao(Constantes.SourceImagem.BOTAO_APROVAR.ToString(), !pUsuario.ToLower().Equals(AppHelper.NomeUsuario.ToLower()));
                    base.BarraBotoes.AlterarVisibilidadeBotao(Constantes.SourceImagem.BOTAO_REJEITAR.ToString(), !pUsuario.ToLower().Equals(AppHelper.NomeUsuario.ToLower()));
                    break;

                case "-":
                    base.BarraBotoes.AlterarVisibilidadeBotao(Constantes.SourceImagem.BOTAO_COPIAR.ToString(), true);
                    base.BarraBotoes.AlterarVisibilidadeBotao(Constantes.SourceImageApp.BOTAO_BAIXA_OPERACIONAL.ToString(), true);
                    break;

                case Constantes.StatusFluxoLM.APROVADO:
                case Constantes.StatusFluxoLM.BAIXA_OPERACIONAL:
                    base.BarraBotoes.AlterarVisibilidadeBotao(Constantes.SourceImagem.BOTAO_EXCLUIR.ToString(), pAcao.Equals(Enumerador.eAcaoBotao.Consulta) == true);
                    base.BarraBotoes.AlterarVisibilidadeBotao(Constantes.SourceImagem.BOTAO_SALVAR.ToString(), pAcao.Equals(Enumerador.eAcaoBotao.Consulta) == false);

                    base.BarraBotoes.AlterarVisibilidadeBotao(Constantes.SourceImagem.BOTAO_COPIAR.ToString(), pStatus.Equals(Constantes.StatusFluxoLM.APROVADO));
                    break;

            }
        }
    }
}
